Tisk v threadu

Otázka od: Ludek ZITA

2. 12. 2002 18:55

Zdravim.
Mam dotaz, lze principielne tisknout v threadu ?
Pisu takovou sluzbu pro NT, ke ktere pristupuji terminaly po TCP/IP. Sluzba
provadi operace s databazi a proto je vse napsano v threadu, ktery se
startuje pro kazdy terminla zvlast. Potrebuji i tisknout. Udelal jsem si
tedy datamodul s datovym zdrojem, sestavami Sinea a
ten volam nejak takto :

           with TPrnModule.Create(CL8100service) do
            try
            //nejaka inicializace promennych SQL dotazu nazev sestavy
             PrintDoklad(Sestava, PrnIndex);
            finally
              free;
            end;

Pokud tiskne jen jeden terminal je vse OK, pokud se ale "sejdou" vyhuci to
na exception.
(Access violation at address 00000000. Read of address 00000000.)

Lze vubec v threadu (vicenasobne) tisknout nebo mam hledat v chybu v Sinee
nebo snad v pouziti datamodulu ?

Predem diky za vsechny rady.

Ludek

Odpovedá: Vaclav Krmela

2. 12. 2002 19:22

> From: Ludek ZITA
>
> Lze vubec v threadu (vicenasobne) tisknout nebo mam hledat
> chybu v Sinee nebo snad v pouziti datamodulu ?

Generator sestav Sinea neni psan pro takovyto zpusob pouziti.
Sinea beznym zpusobem pouziva VCL komponenty
a pro zobrazovani nepouziva metodu Synchronize.

To by se muselo ze Siney vypreparovat tiskove jadro
a odstranit z neho vsechny vnejsi projevy.

O jakou verzi Siney se jedna?
Ve verzi X.40.26 byly delany nektere upravy,
ale myslim, ze na tento zpusob pouziti
to nebude stacit.

Vaclav Krmela

Odpovedá: Ludek ZITA

3. 12. 2002 1:52

> > Lze vubec v threadu (vicenasobne) tisknout nebo mam hledat
> > chybu v Sinee nebo snad v pouziti datamodulu ?
>
> Generator sestav Sinea neni psan pro takovyto zpusob pouziti.
> Sinea beznym zpusobem pouziva VCL komponenty
> a pro zobrazovani nepouziva metodu Synchronize.

Toho jsem se obaval, ale tise jsem doufal, ze pokud jen tisknu nevytvari se
nic vizualniho a nebude tedy problem.

Zkusim to obejit tim, ze nebudu tisk zpoustet v threadu procesu jednotliveho
terminalu, ale udelam jeden tiskovy thread, ktery bude tisknout ulohy
postupne z fronty. Stejne se na tiskarnu nedaji tisknout dva dokumenty
najednou 

Ludek

Odpovedá: Petr Vones

3. 12. 2002 21:18

From: "Ludek ZITA" <konference@sales.cz>
> Toho jsem se obaval, ale tise jsem doufal, ze pokud jen tisknu nevytvari se
> nic vizualniho a nebude tedy problem.

Pokud se nevytvari ani behem tisku nemanipuluje s vizualnimi komponentami tak
by to fungovat v threadu melo. Mozna by bylo dobre se podivat kde ten problem
vznika, muze to totiz indikovat i nejakou dalsi ukrytou chybu apod.

> Zkusim to obejit tim, ze nebudu tisk zpoustet v threadu procesu jednotliveho
> terminalu, ale udelam jeden tiskovy thread, ktery bude tisknout ulohy
> postupne z fronty. Stejne se na tiskarnu nedaji tisknout dva dokumenty
> najednou 

Tiskovou frontu uz maji prece primo Windows.

Petr Vones